package com.can.Thread;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestThread02实现多线程同步下载图片 extends Thread{

    private String url; //网络图片地址
    private String fileName;    //保存的文件名

    //下载图片线程的执行体
    @Override
    public void run() {
        WebDownloader webDownloader = new WebDownloader();
        webDownloader.downloader(url,fileName);
        System.out.println("下载了文件名为==>:"+fileName);
    }

    public static void main(String[] args) {
        String url = "http://img.crawler.qq.com/lolwebschool/0/JAutoCMS_LOLWeb_38b05cbbe6239800e43e53ec85086958/0";
        String fileName = "TestThread02实现多线程同步下载图片";
        String fileSuffix = ".jpg";
        TestThread02实现多线程同步下载图片 t1 = new TestThread02实现多线程同步下载图片(url,fileName+"0"+fileSuffix);
        TestThread02实现多线程同步下载图片 t2 = new TestThread02实现多线程同步下载图片(url,fileName+"1"+fileSuffix);
        TestThread02实现多线程同步下载图片 t3 = new TestThread02实现多线程同步下载图片(url,fileName+"2"+fileSuffix);

        //先下载t1.
        t1.start();
        //然后下载t2.
        t2.start();
        //最后下载t3.
        t3.start();
        //实际它并不是按顺序执行的，而是根据CPU调度的
    }
}


//下载器
class WebDownloader{
    //下载方法
    public void downloader(String url,String fileName){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(fileName));//拷贝一个URL变成一个文件
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("IO异常,downloader()方法出现问题");
        }
    }
}